<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Request;
use think\Session;
use app\admin\model\User as UserModel;


class Index extends Controller
{
    /**
     * 后台登录页面
     * @return \think\response\View
     */
    public function index()
    {
        return view('admin@index/login');
    }

    /**
     * 后台登录处理
     * @return \think\response\View
     */
    public function logindo()
    {
        //接收用户名和密码
        $username = input('username');
        $userpass = input('userpass');
        // var_dump($username,$password);

        // 如果有session清除session
        Session::clear();
        // 根据用户名 获取数据
        $user = UserModel::get(['name' => $username]);
        // 判断 该用户 是否存在
        if ($user) {
            // 获取用户ID
            $id = $user->id;

            // 判断 该用户的密码输入情况
            if (!$user->checkPass($id, $userpass)) {
                return $this->error('登录失败,请重试!');
            }

        } else {
            return $this->error('用户不存在!');
        }


        //把用户信息存入session
        $a = Session::set('user', $user);


        $list = db('rule')
            // 查询权限表下的控制器,方法
            ->field('controller,method')
            // 查询角色权限表,
            ->where('id in' . db('role_rule')
                    // 权限id字段
                    ->field('rule_id')
                    // 查询用户角色表,角色表下的角色ID
                    ->where("role_id in " . db('user_role')
                            // 角色ID字段
                            ->field('role_id')
                            //
                            ->where('user_id = ' . $user['id'])->buildSql())
                    ->buildSql())
            ->select();

        // var_dump($list);die;

        //控制器名转换为大写
        foreach ($list as $key => $val) {

            $list[$key]['controller'] = ucfirst($val['controller']);

        }
        // var_dump($list);

        $access = array();

        $access['Index'] = array('index');
        // var_dump($access);

        //遍历重新拼装
        foreach ($list as $v) {

            $access[$v['controller']][] = $v['method'];

            //把修改和执行修改 添加和执行添加 拼装到一起

            if ($v['method'] == "edit") {

                $access[$v['controller']][] = "doedit";

            }

            if ($v['method'] == "fun2") {

                $access[$v['controller']][] = "save";

            }
        }
        // var_dump($access);die;

        //将权限信息导入session
        Session::set('list', $access);

        // 跳转
        $session = Session::get();
        $this->redirect('admin/main/index');
    }

    /**
     * 后台登出处理
     * @return \think\response\View
     */
    public function logout()
    {
        $this->redirect('admin/index/index');
    }

}
